<script lang="ts">
import Vue from 'vue';
import {mapActions, mapState} from 'vuex';

export default Vue.extend({
  mpType: 'app',
  async onLaunch() {
    console.log('App onLaunch')
    this.$store.commit('setSettings')
    this.checkForUpdate()

    // TODO 临时写法 一两个版本更新后删除
    if (this.locale === 'zh-UG') {
      this.$store.dispatch('setLang', 'ug-CN');
    }

    const res = await this.loginWechat()
    if (res.code === 200) {
      await this.account()
    }
  },
  onShow() {
    console.log('App Show')
    this.checkForUpdate()
  },
  onHide() {
    console.log('App Hide')
  },
  computed: {
    ...mapState(['locale']),
  },
  methods: {
    ...mapActions(['loginWechat', 'account']),
    checkForUpdate() {
      // 获取更新管理器实例
      const updateManager = uni.getUpdateManager();
      // 检查是否有新版本
      updateManager.onCheckForUpdate((res) => {
        console.log("updateManager =-== res", res.hasUpdate)
        if (res.hasUpdate) {
          // 检测到新版本时显示加载提示
          uni.showLoading({
            title: '正在下载新版本'
          });
        }
      });

      // 监听更新就绪事件
      updateManager.onUpdateReady(() => {
        // 隐藏加载提示
        uni.hideLoading();
        // 显示更新确认弹窗
        uni.showModal({
          title: '更新提示',
          content: '新版本已经准备好，请重启应用以使用新版本',
          showCancel: false,
          confirmText: '立即重启',
          success: (res) => {
            if (res.confirm) {
              // 应用更新并重启
              updateManager.applyUpdate();
            }
          }
        });
      });

      // 监听更新失败事件
      updateManager.onUpdateFailed(() => {
        console.log("updateManager.onUpdateFailed -=-==", updateManager.onUpdateFailed)
        // 隐藏加载提示
        uni.hideLoading();
        // 显示失败提示弹窗
        uni.showModal({
          title: '更新失败',
          content: '请检查网络后重试',
          confirmText: '重试',
          success: (res) => {
            if (res.confirm) {
              // 重新检查更新
              this.checkForUpdate();
            }
          }
        });
      });
    }
  }
});
</script>

<style lang="scss">
@import "uview-ui/theme.scss";
@import "uview-ui/index.scss";
@import './index.scss';
@import './font-style.scss';
</style>